package io.github.bomb.batch.rest;

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * BatchController
 * REST 控制器，用于通过 HTTP 接口启动批处理任务。
 * <p>
 * 使用场景：
 * - 提供 RESTful API 以便客户端可以触发批处理任务。
 * - 监控和调试批处理任务的运行状态。
 */
@RestController
public class BatchController {

	@Autowired
	private JobLauncher jobLauncher; // 用于启动批处理任务的核心接口。

	@Autowired
	private Job importJob; // 注入定义的 Job。

	/**
	 * 启动批处理任务的 HTTP 接口。
	 *
	 * @return 返回任务执行结果。
	 */
	@PostMapping("/run-batch")
	public ResponseEntity<String> runBatch() {
		try {
			jobLauncher.run(importJob, new JobParametersBuilder()
					.addLong("time", System.currentTimeMillis()) // 动态参数，确保任务唯一性。
					.toJobParameters());
			return ResponseEntity.ok("Batch job completed"); // 返回成功消息。
		} catch (Exception e) {
			return ResponseEntity.status(500).body("Batch job failed: " + e.getMessage());
		}
	}
}
